﻿#pragma once

#include "../MonsterObject.h"
#include "../../../Shared/Enums.h"
#include "../../MirDatabase/MonsterInfo.h"
#include "../PlayerObject.h"
#include "../../../Shared/Packet.h"

using namespace Server::MirDatabase;
namespace S = ServerPackets;

namespace Server::MirObjects::Monsters
{
    class DigOutZombie : public MonsterObject
    {
    public:
        bool Visible = false, DoneDigOut = false;
        long long VisibleTime = 0, DigOutTime = 0;
        Point *DigOutLocation;
        MirDirection DigOutDirection = static_cast<MirDirection>(0);

        virtual ~DigOutZombie()
        {
            delete DigOutLocation;
        }

    protected:
        bool getCanAttack() const override;
        bool getCanMove() const override;
    public:
        bool getBlocking() const override;

    protected:
        DigOutZombie(MonsterInfo *info);

        void ProcessAI() override;

    public:
        bool Walk(MirDirection dir) override;

        bool IsAttackTarget(MonsterObject *attacker) override;
        bool IsAttackTarget(PlayerObject *attacker) override;

    protected:
        void ProcessSearch() override;

    public:
        Packet *GetInfo() override;
    };
}
